
#include "main.h"
 
#include "Public.h"

// -------INPUT 上拉-B2 B1 B0 A7 A6 A5

#define INPUT1_Port       GPIOA 
#define INPUT1_Pin    GPIO_Pin_4

#define INPUT_CH1    GPIO_ReadInputDataBit( INPUT1_Port, INPUT1_Pin)

#define INPUT2_Port       GPIOA
#define INPUT2_Pin    GPIO_Pin_5

#define INPUT_CH2    GPIO_ReadInputDataBit( INPUT2_Port, INPUT2_Pin)

#define INPUT3_Port       GPIOA
#define INPUT3_Pin    GPIO_Pin_6

#define INPUT_CH3    GPIO_ReadInputDataBit( INPUT3_Port, INPUT3_Pin)

#define INPUT4_Port       GPIOA
#define INPUT4_Pin    GPIO_Pin_7

#define INPUT_CH4    GPIO_ReadInputDataBit( INPUT4_Port, INPUT4_Pin)

#define INPUT5_Port       GPIOB
#define INPUT5_Pin    GPIO_Pin_0

#define INPUT_CH5    GPIO_ReadInputDataBit( INPUT5_Port, INPUT5_Pin)

#define INPUT6_Port       GPIOB
#define INPUT6_Pin    GPIO_Pin_1

#define INPUT_CH6    GPIO_ReadInputDataBit( INPUT6_Port, INPUT6_Pin)



#define Relay_Sensor1_Port       GPIOB
#define Relay_Sensor1_Pin    GPIO_Pin_2

#define INPUT_Relay_Sensor1    GPIO_ReadInputDataBit( Relay_Sensor1_Port, Relay_Sensor1_Pin)



#define Relay_Sensor2_Port       GPIOB
#define Relay_Sensor2_Pin    GPIO_Pin_10

#define INPUT_Relay_Sensor2    GPIO_ReadInputDataBit( Relay_Sensor2_Port, Relay_Sensor2_Pin)



#define Relay_Sensor3_Port       GPIOB
#define Relay_Sensor3_Pin    GPIO_Pin_11

#define INPUT_Relay_Sensor3    GPIO_ReadInputDataBit( Relay_Sensor3_Port, Relay_Sensor3_Pin)

void IO_input_drv(  void );
void IO_input_drv(  void )
{
//  u8 i;

  
  static u32 io1H_cnt=0;
  static u32 io1L_cnt=0;
  static u32 io2H_cnt=0;
  static u32 io2L_cnt=0;
  static u8 io3H_cnt=0;
  static u8 io3L_cnt=0;
  static u8 io4H_cnt=0;
  static u8 io4L_cnt=0;
  static u8 io5H_cnt=0;
  static u8 io5L_cnt=0;
  static u8 io6H_cnt=0;
  static u8 io6L_cnt=0;


  
  u8 noise_time;//防抖时间
  u16 long_time;

  noise_time=3;//防抖时间
  long_time=500;//5s


//  if(INPUT_Relay_Sensor1==0)                     //   继电器1输出端子电平
//  {
//    in_relay1_level=0;
//  }
//  else
//  {
//    in_relay1_level=1;     
//  }   
//  
//   if(INPUT_Relay_Sensor2==0)                     //   继电器2输出端子电平
//  {
//    in_relay2_level=0;
//  }
//  else
//  {
//    in_relay2_level=1;     
//  }      
//  
//   if(INPUT_Relay_Sensor3==0)                     //   继电器3输出端子电平
//  {
//    in_relay3_level=0;
//  }
//  else
//  {
//    in_relay3_level=1;     
//  }      
  

  
   if(INPUT_CH1==0)                     //   红外传感器触发事件
  {
    in_ch1_level=1;                     //电平有效

    io1H_cnt++;    
    if(io1H_cnt==noise_time)
    {
      io1L_cnt=0;
      in_ch1_status=1;
    }
    if(io1H_cnt==long_time)    //长按时间为5s
    {
      io1H_cnt=long_time+1;
      in_ch1_long_event=1;        
    }    
    if(io1H_cnt>=long_time)
    {
      io1L_cnt=0;      
      io1H_cnt=long_time+1;
    }    
  }
  else
  {
    in_ch1_level=0;
    io1L_cnt++;
    
    if(io1L_cnt==noise_time)
    {
      if(io1H_cnt>=noise_time && io1H_cnt<long_time)
      {
        in_ch1_event=1;         
      }
      io1H_cnt=0;      
      io1L_cnt=noise_time+1;
      in_ch1_status=0;
    } 
    if (io1L_cnt>=noise_time+1)
    {
      io1H_cnt=0;         
      io1L_cnt=noise_time+1;
    }

  } 
  
 
  
  
  
   if(INPUT_CH2==0)     //冲洗开关
  {
    in_ch2_level=1;
    io2H_cnt++;
    if(io2H_cnt==noise_time)
    {
      io2L_cnt=0;
      in_ch2_status=1;
    }
    if(io2H_cnt==long_time)
    {
      io2H_cnt=long_time+1;  
      in_ch2_long_event=1;       
    }    
    if(io2H_cnt>=long_time)
    {
      io2L_cnt=0;      
      io2H_cnt=long_time+1;

    }    
  }
  else
  {
    in_ch2_level=0;
    io2L_cnt++;
    
    if(io2L_cnt==noise_time)
    {
      if(io2H_cnt>=noise_time && io2H_cnt<long_time)
      {
        in_ch2_event=1;         
      }
      io2H_cnt=0;      
      io2L_cnt=noise_time+1;
      in_ch2_status=0;
    } 
    if (io2L_cnt>=noise_time+1)
    {
      io2H_cnt=0;         
      io2L_cnt=noise_time+1;
    }      
  
  } 
  
 



  
  if(INPUT_CH3==0)
  {
    in_ch3_level=1;
    
    io3H_cnt++;
    
    if(io3H_cnt==noise_time)
    {
      io3L_cnt=0;
      in_ch3_status=1;
    }
    if(io3H_cnt==long_time)    //长按时间为5s
    {
      io3H_cnt=long_time+1;  
      in_ch3_long_event=1;       
    }    
    if(io3H_cnt>=long_time)
    {
      io3L_cnt=0;
      io3H_cnt=long_time+1;
    }    
  }
  else
  {
    in_ch3_level=0;
    io3L_cnt++;
    
    if(io3L_cnt==noise_time)
    {
      if(io3H_cnt>=noise_time && io3H_cnt<long_time)
      {
        in_ch3_event=1;         
      }
      io3H_cnt=0;      
      io3L_cnt=noise_time+1;
      in_ch3_status=0;
    } 
    if (io3L_cnt>=noise_time+1)
    {
      io3H_cnt=0;         
      io3L_cnt=noise_time+1;
    }      
  
  } 
  
  
  if(INPUT_CH4==0)
  {
    in_ch4_level=1;
    
    io4H_cnt++;
    
    if(io4H_cnt==noise_time)
    {
      io4L_cnt=0;
      in_ch4_status=1;
    }
    if(io4H_cnt==long_time)    //长按时间为5s
    {
      io4H_cnt=long_time+1;  
      in_ch4_long_event=1;       
    }    
    if(io4H_cnt>=long_time)
    {
      io4L_cnt=0;
      io4H_cnt=long_time+1;
    }    
  }
  else
  {
    in_ch4_level=0;
    io4L_cnt++;
    
    if(io4L_cnt==noise_time)
    {
      if(io4H_cnt>=noise_time && io4H_cnt<long_time)
      {
        in_ch4_event=1;         
      }
      io4H_cnt=0;      
      io4L_cnt=noise_time+1;
      in_ch4_status=0;
    } 
    if (io4L_cnt>=noise_time+1)
    {
      io4H_cnt=0;         
      io4L_cnt=noise_time+1;
    }
  } 
  

   if(INPUT_CH5==0)                     //   
  {
    in_ch5_level=1;                     //电平有效

    io5H_cnt++;    
    if(io5H_cnt==noise_time)
    {
      io5L_cnt=0;
      in_ch5_status=1;
    }
    if(io5H_cnt==long_time)    //长按时间为5s
    {
      io5H_cnt=long_time+1;  
      in_ch5_long_event=1;       
    }    
    if(io5H_cnt>=long_time)
    {
      io5L_cnt=0;
      io5H_cnt=long_time+1;
    }    
  }
  else
  {
    in_ch5_level=0;
    io5L_cnt++;
    
    if(io5L_cnt==noise_time)
    {
      if(io5H_cnt>=noise_time && io5H_cnt<long_time)
      {
        in_ch5_event=1;         
      }
      io5H_cnt=0;      
      io5L_cnt=noise_time+1;
      in_ch5_status=0;
    } 
    if (io5L_cnt>=noise_time+1)
    {
      io5H_cnt=0;         
      io5L_cnt=noise_time+1;
    }
  } 
  
  
   if(INPUT_CH6==0)                     //   
  {
    in_ch6_level=1;                     //电平有效

    io6H_cnt++;    
    if(io6H_cnt==noise_time)
    {
      io6L_cnt=0;
      in_ch6_status=1;
    }
    if(io6H_cnt==long_time)    //长按时间为5s
    {
      io6H_cnt=long_time+1;  
      in_ch6_long_event=1;       
    }    
    if(io6H_cnt>=long_time)
    {
      io6L_cnt=0;
      io6H_cnt=long_time+1;
    }    
  }
  else
  {
    in_ch6_level=0;
    io6L_cnt++;
    
    if(io6L_cnt==noise_time)
    {
      if(io6H_cnt>=noise_time && io6H_cnt<long_time)
      {
        in_ch6_event=1;         
      }
      io6H_cnt=0;      
      io6L_cnt=noise_time+1;
      in_ch6_status=0;
    } 
    if (io6L_cnt>=noise_time+1)
    {
      io6H_cnt=0;         
      io6L_cnt=noise_time+1;
    }    
 
  } 
}


void relay_input_drv(  void );//继电器输入采集
void relay_input_drv(  void )//继电器输入采集
{
//  u8 i;

  
  static u32 io1H_cnt=0;
  static u32 io1L_cnt=0;
  static u32 io2H_cnt=0;
  static u32 io2L_cnt=0;
  static u8 io3H_cnt=0;
  static u8 io3L_cnt=0;
//  static u8 io4H_cnt=0;
//  static u8 io4L_cnt=0;
//  static u8 io5H_cnt=0;
//  static u8 io5L_cnt=0;
//  static u8 io6H_cnt=0;
//  static u8 io6L_cnt=0;


  
  u8 noise_time;//防抖时间
//  u16 long_time;

  noise_time=5;//防抖时间150ms
//  long_time=500;//5s


  
   if(INPUT_Relay_Sensor1!=0)      //   继电器1反馈状态
  {
    io1H_cnt++;    
    if(io1H_cnt==noise_time)
    {
      io1L_cnt=0;
      io1H_cnt=noise_time+1;      
      Relay1_Sensor_status=1;
    }   
    if(io1H_cnt>=noise_time+1)
    {
      io1L_cnt=0;  
      io1H_cnt=noise_time+1;
    }    
  }
  else
  {
    io1L_cnt++;
    
    if(io1L_cnt==noise_time)
    {
      io1H_cnt=0;      
      io1L_cnt=noise_time+1;
      Relay1_Sensor_status=0;
    } 
    if (io1L_cnt>=noise_time+1)
    {
      io1H_cnt=0;         
      io1L_cnt=noise_time+1;
    }

  } 

   if(INPUT_Relay_Sensor2!=0)      //   继电器2反馈状态
  {
    io2H_cnt++;    
    if(io2H_cnt==noise_time)
    {
      io2L_cnt=0;
      io2H_cnt=noise_time+1;      
      Relay2_Sensor_status=1;
    }   
    if(io2H_cnt>=noise_time+1)
    {
      io2L_cnt=0;  
      io2H_cnt=noise_time+1;
    }    
  }
  else
  {
    io2L_cnt++;
    
    if(io2L_cnt==noise_time)
    {
      io2H_cnt=0;      
      io2L_cnt=noise_time+1;
      Relay2_Sensor_status=0;
    } 
    if (io2L_cnt>=noise_time+1)
    {
      io2H_cnt=0;         
      io2L_cnt=noise_time+1;
    }

  } 
  
   if(INPUT_Relay_Sensor3!=0)      //   继电器3反馈状态
  {
    io3H_cnt++;    
    if(io3H_cnt==noise_time)
    {
      io3L_cnt=0;
      io3H_cnt=noise_time+1;      
      Relay3_Sensor_status=1;
    }   
    if(io3H_cnt>=noise_time+1)
    {
      io3L_cnt=0;  
      io3H_cnt=noise_time+1;
    }    
  }
  else
  {
    io3L_cnt++;
    
    if(io3L_cnt==noise_time)
    {
      io3H_cnt=0;      
      io3L_cnt=noise_time+1;
      Relay3_Sensor_status=0;
    } 
    if (io3L_cnt>=noise_time+1)
    {
      io3H_cnt=0;         
      io3L_cnt=noise_time+1;
    }

  } 

}


void IO_input_link(  void );
void IO_input_link(  void )
{
  if(in_ch4_status!=0)   //满水
  {
    if(work_time1_cnt>=work_time1 && work_time1_cnt<work_time1+2000)//大于滤波时间
    {
      work_time1_cnt=work_time1+2000;
      water_full_event=1;
    }
    if(work_time1_cnt>=work_time1)
    {
      water_full_status=1;
    }      
  }
  else
  {
    work_time1_cnt=0;
    water_full_status=0;    
  }
  
  
  
  
  
  
}


void IO_input(  void )
{
//  u8 i;

  if( gc.u8Scan_input_1ms_cnt<10 )
  {  return; }      
  gc.u8Scan_input_1ms_cnt =0;
  
  IO_input_drv();//采集
  
  relay_input_drv(); //采集 

  IO_input_link(); //连接层 
  

//  
//  if(INPUT_Relay_Sensor1==0)                     //   继电器1输出端子电平
//  {
//    in_relay1_level=0;
//  }
//  else
//  {
//    in_relay1_level=1;     
//  }   
//  
//   if(INPUT_Relay_Sensor2==0)                     //   继电器2输出端子电平
//  {
//    in_relay2_level=0;
//  }
//  else
//  {
//    in_relay2_level=1;     
//  }      
//  
//   if(INPUT_Relay_Sensor3==0)                     //   继电器3输出端子电平
//  {
//    in_relay3_level=0;
//  }
//  else
//  {
//    in_relay3_level=1;     
//  }      
//  

  

  
  


  



}


